package com.qidian.buy.product.controller;

import com.qidian.buy.util.pojo.BuyResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * @Author 戴着假发的程序员
 * @company 起点编程
 * @date 2023/5/6-10:17
 * @TODO
 */
@RestController
@RequestMapping("/upload")
@CrossOrigin
public class UploadController {
    @Value("${imageDir}")
    private String imageDir;// 可以随时在配置文件中修改文件存储的目录
    @Value("${imageServerUrl}")
    private String imageServerUrl;

    @PostMapping           // 上传文件的文件域的名字必须是uploadFile // 这里使用数组同时接收多个文件
    public BuyResult upload(@RequestParam("uploadFile") MultipartFile [] files) {
        List<String> urls = new ArrayList<>();
        for (MultipartFile file : files) {
            // 获取文件名
            String fileName = file.getOriginalFilename();
            String ext = fileName.substring(fileName.lastIndexOf("."));
            // 生成随机的物理文件名
            fileName = UUID.randomUUID().toString().replace("-", "") + ext;
            // 创建目标文件对象
            File target = new File(imageDir + fileName);
            // 转存文件
            try {
                file.transferTo(target);
                // 生成文件的访问地址
                String imageUrl = imageServerUrl + fileName;
                // 将这个url加入到一个列表中
                urls.add(imageUrl);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return BuyResult.ok(urls);
    }
}
